package scalahighlevel

import scala.collection.mutable
/**
  * Created by 11202 on 2019/3/12.
  */
object VectorAndSetTest {

  def main(args: Array[String]): Unit = {
    /**
      * 序列: 常用的序列： Vector、Range
      */

    //Vector: 带下标的序列，从0开始

//    val v = Vector(1,2,3,4,5,6)

    //返回第一个满足条件的元素
//     val res: Option[Int] = v.find( _ > 3)

    //更新下标为2的元素值
//    val res2: Vector[Int] = v.updated(2,100)
//    //Range: 整数序列
//    //以下几种写法
//    println("第一种写法："+Range(0,5))
//    println("第二种写法："+ (0 until 5))
//    println("第三种写法："+ (0 to 4))
//
//    //两个Range可以相加
//    val res3: immutable.IndexedSeq[Char] = ('0' to '9') ++ ('A' to 'Z')
//    println(res3)
//    //可以把Range 转成一个List
//    1 to 5 toList

    /**
      * 集（Set）: 是不重复元素的集合，默认的实现：HashSet
      */
    //创建一个Set
    var s1 = Set(10,2,0,1)
    //往里面添加一个重复的元素
    s1 += 0
    s1

    //往里面添加一个不重复的元素
    s1 += 100
    s1

    //LinkedHashSet
    var weeksDay = mutable.LinkedHashSet("星期一","星期二")
    val res5: mutable.LinkedHashSet[String] = weeksDay + "星期五"
    weeksDay.contains("星期二")

    //可排序的Set
    var s2 = mutable.SortedSet(1,2,3,100,10,4)

    //判断一个Set是否是另一个Set的子集
    Set("星期一","星期二") subsetOf(weeksDay)

    //集Set: 并集union、交集intersect、差集 diff
    var set1 = Set(1,2,3,4,5,6)
    var set2 = Set(5,6,7,8,9,10)

    //并集: 去掉重复元素
    val res10: Set[Int] = set1 union set2

    //交集
    val res11: Set[Int] =set1 intersect set2

    //差集: 从set1中，除去set2
    val res12: Set[Int] =set1 diff set2



  }

}
